﻿Public Class clHeroe : Inherits clSer
    Protected Raza As LaRaza
    Protected Clase As LaClase
    Protected Princesa As Boolean 'SOLAMENTE CAMBIAMOS EL NUMERO DE PISO POR EL RESTO EXACTAMENTE =
    Public Inventario As New clInventario()
    Protected Habilidades As List(Of clHabilidad)
    Protected _Imagen As Image
    Public Property ControlDelHeroe As clControlBasico
    Protected _HabilidadesDelHeroe As New List(Of clHabilidad)
    Public ReadOnly Property HabilidadesDelHeroe As ObjectModel.ReadOnlyCollection(Of clHabilidad)
        Get
            Return _HabilidadesDelHeroe.AsReadOnly
        End Get
    End Property
    ''' <summary>
    ''' Inicializa las habilidades a una nueva lista --¡Aviso! si hay habildiades contenidas en el héroe se perderán--
    ''' </summary>
    ''' <param name="habilidades">lista de habilidades -puede estar vacía, no aconsejable-</param>
    ''' <remarks></remarks>
    Public Sub InicializarHabilidadesA(ByVal habilidades As List(Of clHabilidad))
        _HabilidadesDelHeroe.Clear()
        _HabilidadesDelHeroe = habilidades
    End Sub
    Public Sub AgregarHabilidad(ByVal habilidad As clHabilidad)
        _HabilidadesDelHeroe.Add(habilidad)
    End Sub
    Public Property imagen As Image
        Get
            Return _Imagen
        End Get
        Set(ByVal value As Image)
            _Imagen = value
        End Set
    End Property
    Public Sub New()

    End Sub
    ''' <summary>
    ''' Constructor más completo. Pide todos los parámetros.
    ''' </summary>
    ''' <param name="nombre">Nombre del héroe</param>
    ''' <param name="ataque">Ataque del héroe</param>
    ''' <param name="defensa">Defensa del héroe</param>
    ''' <param name="velocidad">Velocidad del héroe</param>
    ''' <param name="vida">Vida del héroe</param>
    ''' <param name="control">Control básico del héroe</param>
    ''' <param name="imagen">imagen de combate del héroe</param>
    ''' <param name="ListaInicialDeHabilidades">Lista inicial de habilidades</param>
    ''' <remarks></remarks>
    Public Sub New(ByVal nombre As String, ByVal ataque As Decimal, ByVal defensa As Decimal, ByVal velocidad As Decimal, ByVal vida As Decimal, ByVal control As clControlBasico, ByVal imagen As Image, ByVal ListaInicialDeHabilidades As List(Of clHabilidad))
        Me.New(nombre, ataque, defensa, velocidad, vida, imagen)
        Me.ControlDelHeroe = control
        InicializarHabilidadesA(ListaInicialDeHabilidades)
    End Sub
    Public Sub New(ByVal nombre As String, ByVal ataque As Decimal, ByVal defensa As Decimal, ByVal velocidad As Decimal, ByVal vida As Decimal, ByVal imagen As Image)
        Me.New(nombre, ataque, defensa, velocidad, vida)
        _Imagen = imagen
        ControlDelHeroe = New clControlBasico()
    End Sub
    Public Sub New(ByVal nombre As String, ByVal ataque As Decimal, ByVal defensa As Decimal, ByVal velocidad As Decimal, ByVal vida As Decimal)
        _Nombre = nombre
        _NombreActual = nombre
        _Ataque = ataque
        _AtaqueActual = ataque
        _Defensa = defensa
        _DefensaActual = defensa
        _Velocidad = velocidad
        _VelocidadActual = velocidad
        _Vida = vida
        _VidaRestante = vida
    End Sub
    Public Sub New(ByVal nombre As String, ByVal ataque As Decimal, ByVal defensa As Decimal, ByVal velocidad As Decimal, ByVal vida As Decimal, ByVal control As clControlBasico)
        Me.New(nombre, ataque, defensa, velocidad, vida)
        ControlDelHeroe = control
    End Sub

    Public Enum LaRaza
        Humano
        Elfo
        Enano
    End Enum
    Public Enum LaClase
        Guerrero
        Mago
        Sacerdote
    End Enum

    Public Sub EleccionRaza(ByVal opcion As LaRaza)  'Estadísticas repartidas sobre 20
        Select Case (opcion)
            Case LaRaza.Humano 'Humano
                _Ataque = 7
                _Defensa = 7
                _Velocidad = 6
            Case LaRaza.Elfo 'Elfo
                _Ataque = 8
                _Defensa = 4
                _Velocidad = 8
            Case LaRaza.Enano 'Enano
                _Ataque = 7
                _Defensa = 9
                _Velocidad = 4
        End Select
        Raza = opcion
    End Sub
    Public Sub EleccionClase(ByVal opcion As LaClase)
        Select Case (opcion)
            Case LaClase.Guerrero 'Guerrero
                Habilidades.Add(New clHabilidad("Bloquear", 0, "S")) 'Bloquea la siguiente habilidad del enemigo
            Case LaClase.Mago 'Mago
                Habilidades.Add(New clHabilidad("Reflejo", 0, "S")) 'La siguiente habilidad del enemigo puede ser devuelta al enemigo. Te impacta pero la puedes usar contra el
            Case LaClase.Sacerdote 'Sacerdote
                Habilidades.Add(New clHabilidad("Curacion", 0, "S")) 'Curas una cantidad de vida 20%
        End Select
    End Sub



End Class
